package interfaceGrafica;

import negocios.*;
import javax.swing.JLayeredPane;
import javax.swing.JButton;
import javax.swing.JLabel;
import javax.swing.ImageIcon;
import javax.swing.SwingConstants;
import java.awt.Cursor;
import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;

@SuppressWarnings ("serial") 
public class MenuPrincipal extends JLayeredPane {
	private Partida partida;
	private Desafio desafio;

	private Janela janela;
	private JLabel background;

	private JButton training;
	private JButton challenge;
	private JButton instructions;
	private JButton exit;

	private ImageIcon backgroundImagem;
	private ImageIcon trainingImagem1;
	private ImageIcon trainingImagem2;
	private ImageIcon trainingImagem3;
	private ImageIcon challengeImagem1;
	private ImageIcon challengeImagem2;
	private ImageIcon challengeImagem3;
	private ImageIcon instructionsImagem1;
	private ImageIcon instructionsImagem2;
	private ImageIcon instructionsImagem3;
	private ImageIcon exitImagem1;
	private ImageIcon exitImagem2;
	private ImageIcon exitImagem3;

	public MenuPrincipal(Janela janela, Partida partida) {
		super();

		this.partida = partida;
		backgroundImagem = new ImageIcon(
				"Data\\Imagens\\MenuPrincipal\\background.png");
		trainingImagem1 = new ImageIcon(
				"Data\\Imagens\\MenuPrincipal\\trainingImagem1.png");
		trainingImagem2 = new ImageIcon(
				"Data\\Imagens\\MenuPrincipal\\trainingImagem2.png");
		trainingImagem3 = new ImageIcon(
				"Data\\Imagens\\MenuPrincipal\\trainingImagem3.png");
		challengeImagem1 = new ImageIcon(
				"Data\\Imagens\\MenuPrincipal\\challengeImagem1.png");
		challengeImagem2 = new ImageIcon(
				"Data\\Imagens\\MenuPrincipal\\challengeImagem2.png");
		challengeImagem3 = new ImageIcon(
				"Data\\Imagens\\MenuPrincipal\\challengeImagem3.png");
		instructionsImagem1 = new ImageIcon(
				"Data\\Imagens\\MenuPrincipal\\instructionsImagem1.png");
		instructionsImagem2 = new ImageIcon(
				"Data\\Imagens\\MenuPrincipal\\instructionsImagem2.png");
		instructionsImagem3 = new ImageIcon(
				"Data\\Imagens\\MenuPrincipal\\instructionsImagem3.png");
		exitImagem1 = new ImageIcon(
				"Data\\Imagens\\MenuPrincipal\\exitImagem1.png");
		exitImagem2 = new ImageIcon(
				"Data\\Imagens\\MenuPrincipal\\exitImagem2.png");
		exitImagem3 = new ImageIcon(
				"Data\\Imagens\\MenuPrincipal\\exitImagem3.png");

		this.janela = janela;
		this.background = new JLabel();
		this.background.setIcon(backgroundImagem);
		this.background.setBounds(0, 0, 800, 600);
		super.add(background, JLayeredPane.DEFAULT_LAYER);

		training = new JButton();
		inicializarBotao(this, training, trainingImagem1, trainingImagem2,
				trainingImagem3, 100, 210, trainingImagem1.getIconWidth(),
				trainingImagem1.getIconHeight());
		training.addMouseListener(new MouseAdapter() {
			public void mouseClicked(MouseEvent me) {
				mouseClicar(training, 1);
			}

		});

		challenge = new JButton();
		inicializarBotao(this, challenge, challengeImagem1, challengeImagem2,
				challengeImagem3, 100, 290, challengeImagem1.getIconWidth(),
				challengeImagem1.getIconHeight());
		challenge.addMouseListener(new MouseAdapter() {
			public void mouseClicked(MouseEvent me) {
				mouseClicar(challenge, 2);
			}
		});

		instructions = new JButton();
		inicializarBotao(this, instructions, instructionsImagem1,
				instructionsImagem2, instructionsImagem3, 100, 370,
				instructionsImagem1.getIconWidth(),
				instructionsImagem1.getIconHeight());
		instructions.addMouseListener(new MouseAdapter() {
			public void mouseClicked(MouseEvent me) {
				mouseClicar(instructions, 3);
			}
		});

		exit = new JButton();
		inicializarBotao(this, exit, exitImagem1, exitImagem2, exitImagem3,
				100, 450, exitImagem1.getIconWidth(),
				exitImagem1.getIconHeight());
		exit.addMouseListener(new MouseAdapter() {
			public void mouseClicked(MouseEvent me) {
				mouseClicar(exit, 4);
			}
		});

	}

	public static void inicializarBotao(JLayeredPane painel, JButton botao,
			ImageIcon iconePadrao, ImageIcon iconeClicado,
			ImageIcon iconeInteracao, int x, int y, int largura, int altura) {
		botao.setHorizontalAlignment(SwingConstants.CENTER);
		botao.setVerticalAlignment(SwingConstants.CENTER);
		botao.setIcon(iconePadrao);
		botao.setContentAreaFilled(false);
		botao.setBorder(null);
		botao.setFocusable(false);
		botao.setRolloverEnabled(true);
		botao.setRolloverIcon(iconeInteracao);
		botao.setPressedIcon(iconeClicado);
		botao.setCursor(new Cursor(Cursor.HAND_CURSOR));
		botao.setBounds(x, y, largura, altura);
		painel.add(botao, JLayeredPane.PALETTE_LAYER);
	}

	public void setModoDeJogo(ModoDeJogo modoDeJogo) {
		this.partida.setModoDeJogo(modoDeJogo);
	}

	private void mouseClicar(JButton botao, int escolha) {
		switch (escolha) {
		case 1:
			janela.setContentPane(new MenuTreinamento(janela, this, partida));
			janela.pack();
			break;

		case 2:
			desafio = new Desafio();
			partida.setModoDeJogo(desafio);
			janela.setContentPane(new PainelDesafio(janela, this, desafio));
			janela.pack();
			break;

		case 3:
			janela.setContentPane(new PainelInstrucao(janela, this));
			janela.pack();
			break;

		case 4:
			System.exit(0);
			break;

		default:

			break;
		}
	}
}
